package org.lab.tracecash.common.model;

import java.io.Serializable;

/**
 * Entidad que representa los parámetros de búsqueda desde el front:
 * <ul>
 * <li>Página actual de resultados (paginación)</li>
 * <li>Número de resultados por página</li>
 * <li>Expresión FIQL con las condiciones de búsqueda</li>
 * </ul>
 * Generalmente las búsquedas devolverán un objeto de tipo {@link SearchResults} con los resultados.
 */
@SuppressWarnings("serial")
public class SearchParams implements Serializable {

	private Long currentPage;
	private Integer pageSize;
	private String queryString;
	private String orderColumn;
	private SearchOrder order;

	public SearchParams() {
	}

	public Long getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(Long currentPage) {
		this.currentPage = currentPage;
	}

	public String getQueryString() {
		return queryString;
	}

	public void setQueryString(String queryString) {
		this.queryString = queryString;
	}

	public Integer getPageSize() {
		return pageSize;
	}

	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}

	public SearchParams withQueryString(String queryString) {
		this.queryString = queryString;
		return this;
	}

	public SearchParams withCurrentPage(Long page) {
		this.currentPage = page;
		return this;
	}

	public SearchParams withPageSize(Integer value) {
		this.pageSize = value;
		return this;
	}

	public String getOrderColumn() {
		return orderColumn;
	}

	public void setOrderColumn(String orderColumn) {
		this.orderColumn = orderColumn;
	}

	public SearchOrder getOrder() {
		return order;
	}

	public void setOrder(SearchOrder order) {
		this.order = order;
	}
}